package threadDemo;

/**
 * 多线程将程序的单一顺序执行方式改为可以让多个这样顺序执行的代码片段“同时”执行。
 * 这里并非真正的同时，而是并发的。
 * <p>
 * 创建线程的方式有两种，
 * 第一种:
 *      继承Thread重写run方法。在run方法中定义线程要执行的代码.
 *
 * 第二:
 *      种创建线程的方式:实现Runnable接口单独定义线程任务
 */
public class ThreadDemo1 {
    public static void main(String[] args) {
        /** 继承Thread重写run方法。在run方法中定义线程要执行的代码. */

        Thread t1 = new MyThread1();//向上造型,多态,方法.
        Thread t2 = new MyThread2();

        t1.start();
        t2.start();
    }
}
/**
 * 第一种创建线程的方式优点为结构简单，便于使用匿名内部类形式创建。
 * 缺点主要有两个:
 * 1.:由于Java是单继承的，这导致如果继承了Thread就无法在继承其他类，这在实际开发中很不便.因为我们
 *    通常继承一个类的主要因素是为了复用方法。
 *
 * 2.:定义线程的同时重写run方法将任务定义在了线程中，导致线程与任务是绑定在一起的，不利于线程的重用.
 *
 */

/** cpu线程的并发 */
class MyThread1 extends Thread {
    public void run() {
        for (int i = 0; i < 10000; i++) {
            System.out.println("你好我是一个路过的假面骑士!");
        }
    }
}
class MyThread2 extends Thread {
    public void run() {
        for (int i = 0; i < 10000; i++) {
            System.out.println("我是格鲁斯!我是格鲁斯...");
        }
    }
}